This invention relates generally to computer file management, and more particularly to methods, systems, and computer program products for file version control management.
Real-time operating system (OS) software is typically used in systems that require fast, high-volume, high-throughput transaction processing capability. Systems that require around-the-clock operation with high reliability present an even greater set of challenges for OS and application software executing in such an environment. Applications that may require such an OS include reservation systems, banking systems, authorization systems, routing systems, and dispatching systems, where system operators cannot afford downtime for system maintenance or upgrades. These applications demand high performance, particularly when incorporated into a large-scale, wide area, multi-user network. In order to upgrade and improve applications running on a real-time OS without halting or resetting the system on which the OS is executing, special methods of file version management are necessary.
One method of updating application programs in a system executing a real-time OS, referred to as an online system, is to use a separate system, referred to as an offline system, to develop new application programs and then transfer the application programs to the online system. Some online systems contain multiple processors, which can each execute tasks based on requests from various users of the online system. The processors in the online system typically have shared access to a program base that holds the application programs. When a task executes, a particular version of an application program is invoked. As task execution varies in duration, a conflict can arise when an application program is updated while a task is actively executing a version of the application program. For example, an online system may contain two processors, with the first processor executing a task that started using version 1.0 of an application program, while the second processor is idle. When version 2.0 of the application program is transferred to the online system and activated while the first processor is still executing version 1.0, the online system must accommodate version 2.0 while not interfering with version 1.0 still in use by the first processor. A task may begin executing on the second processor using version 2.0 of the application program before the task executing version 1.0 on the first processor completes. This potential for conflict within the online system necessitates special version management techniques to allow multiple versions of an application program to exist within the online system, while maintaining the association between application versions and tasks executing on different processors.
As application programs have evolved, there is a greater dependency upon data files that support or are populated by application programs. Data files are typically managed independent of application programs, using a file system rather than a program base. Unlike application programs, data files are not typically managed through version control in a file system environment. Furthermore, there are file types that do not fit into a conventional category of either application programs or data files, such as Java “.jar” and “.class” files. Since there are a wide variety of file types and application programs, it would be beneficial to develop a method to manage all of these arbitrary byte stream files, controlling the version of each file or application program made available to each processor in an online system. Version control management should be robust enough to manage a group of arbitrary byte stream files associated with a task such that multiple versions may exist while tasks are active. Furthermore, upon completion of tasks using older versions of the arbitrary byte stream files, stored baseline versions of the arbitrary byte stream files should be updated so that future invocations of tasks access the latest versions of files and application programs.
While file version management systems exist in the context of software development environments, such systems fail to handle the unique problems faced by a multiple processor real-time execution environment. For example, a file version control management system may support the creation of multiple versions of source code and allow association of different versions of source code with different versions of software build files, such that various versions of an application program can be reproduced. Other file version management systems are typically used for purposes of backup and recovery, where file versions are identified by the chronology of creation and modification. However, such systems fail to manage the deployment of an application program and associated files in a system where a previous version of the application program and associated files are still in use, such as the previously described online system.
Accordingly, there is a need for a method to manage multiple versions of arbitrary byte stream files in a multiple processor real-time execution environment such that different file versions can be accessed by each processor within the multiple processor real-time execution environment without interfering with the other processors.